// Reservas
// PRueba!
// asdfasdfasdfasdfadsfadsf
var IdReserva = -1;
var IdReservaCobro = -1;
var IdReservaDetalle = -1;
var IdReservaDetalleToSearch = -1;

function openReservas(tipo) {
// abro la ventana y opaco el fondo
    window.pantalla = "reservas";
    clear("reservas");
    $("#principalReservas").css("visibility", "visible");
    $("#blackViel").css("z-index", "1000");
    $("#blackViel").fadeTo("slow", 1.0);
    // cargo los datos en los textbox
    $("#txtCheckin").val(window.anoInicio + "-" + window.mesInicio + "-" + window.diaInicio);
    $("#txtCheckout").val(window.anoFin + "-" + window.mesFin + "-" + window.diaFin);
    $("#txtReservaRoom").val(roomInicio);
    // Cargo las camas disponibles

    var dataToSend = "&id=" + roomInicio;
    $.ajax({
        type: "post",
        url: "./src/habitaciones.php",
        data: "type=4" + dataToSend,
        success: function(data) {
            var cantidadFinal = parseInt(data) - parseInt(camaInicio);
            $("#cboReservaCantidad").find('option')
                    .remove()
                    .end();


            // Carga el importe a cobrar

            $("#txtCheckin").val(window.anoInicio + "-" + window.mesInicio + "-" + window.diaInicio);
            $("#txtCheckout").val(window.anoFin + "-" + window.mesFin + "-" + window.diaFin);
            window.cantDiasRegistracion = cantDias(window.mesInicio + "/" + window.diaInicio + "/" + window.anoInicio,
                    window.mesFin + "/" + window.diaFin + "/" + window.anoFin) + 1;
            getRoomById(window.roomInicio, "reservas");

            for (var i = 1; i <= cantidadFinal + 1; i++) {
                $("#cboReservaCantidad").append("<option value='" + i + "'>" + i + "</option>");
            }

        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Status: " + textStatus);
            alert("Error: " + errorThrown);
        }

    });
    // oculto los menues
    hideMenu(1);
    hideMenu(2);
}
function hideReservas(tipo) {
    $("#principalReservas").css("visibility", "hidden");
    $("#blackViel").css("z-index", "-1");
    $("#blackViel").fadeTo("slow", 0);
    hideMenu(1);
    hideMenu(2);
}


function getReservas() {

    var ano = $("#cboAnos").prop("value");
    var mes = $("#cboMeses").prop("value");
    var d = new Date();
    var dia = d.getDate();
    data = "&ano=" + ano + "&mes=" + mes + "&dia=" + dia;
    $.ajax({
        type: "post",
        url: "./src/reservas.php",
        dataType: 'json',
        data: "type=0" + data,
        success: function(data) {
            //$("#listado").html(data);
            //alert(data[0]);

            var inicioLibre = 0;
            // recorro todas las reservas
            for (var index = 0; index < data.length; ++index) {
                var arrToSelect = data[index].split(" ");
                // TODO: hay que agregar los años! para manejar las reservas de fin de año
                // TODO: Crear la lógica para reservas mayores a un mes completo (agregar monthStart<mes && mes<monthEnd)
                var idReserva = parseInt(arrToSelect[0]);
                var dateStart = parseInt(arrToSelect[1].split("-")[2]);
                var dateEnd = parseInt(arrToSelect[2].split("-")[2]);
                var monthStart = parseInt(arrToSelect[1].split("-")[1]);
                var monthEnd = parseInt(arrToSelect[2].split("-")[1]);
                var yearStart = parseInt(arrToSelect[1].split("-")[0]);
                var yearEnd = parseInt(arrToSelect[2].split("-")[0]);
                var idRoom = parseInt(arrToSelect[5]);
                var idCama = parseInt(arrToSelect[6]);
                var cantidadCamas = parseInt(arrToSelect[6]);
                var nombreReserva = arrToSelect[7];
                var apellidoReserva = arrToSelect[8];
                var libre = 0;
                // verifico si están dentro del mismo mes
                if (monthStart != monthEnd) {

                    if (monthStart == mes) {
                        dateEnd = new Date(ano, mes, 0).getDate();
                    } else if (monthEnd == mes) {
                        dateStart = '01';
                        monthStart = monthEnd;
                        yearStart = yearEnd;
                    }
                }

                // verifico para la primera de las reservas si el rango está disponible
                while (libre == 0) {
                    libre = 1;
                    inicioLibre = inicioLibre + 1;
                    for (var x = parseInt(dateStart); x <= parseInt(dateEnd); x++) {

                        var name = yearStart + "-" + monthStart + "-" + x +
                                "-" + idRoom + "-" + inicioLibre + "-C";
                        var toChange = document.getElementById(name);
                        //alert(name);
                        if ($(toChange).val() != "V" && toChange != null) {
                            //alert('loop 1 ' + libre + ' ' + index);
                            libre = 0;
                        }
                    }
                }

                // pinto a partir de la libre
                for (var i = inicioLibre; i <= cantidadCamas + inicioLibre - 1; i++) {
                    for (var x = parseInt(dateStart); x <= parseInt(dateEnd); x++) {
                        var name = yearStart + "-" + monthStart + "-" + x +
                                "-" + idRoom + "-" + i + "-C";
                        //alert('loop 2' + dateEnd);

                        var toChange = document.getElementById(name);


                        // Label con el nombre
                        if (x == parseInt(dateStart)) {

                            var label = yearStart + "-" + monthStart + "-" + x +
                                    "-" + idRoom + "-" + i + "-L";
                            var labelToChange = document.getElementById(label);
                            $(labelToChange).text(nombreReserva + " " + apellidoReserva);
                        }

                        // Celda
                        $(toChange).val("R-" + idReserva);
                        $(toChange).css("background-color", "whitesmoke");
                        $(toChange).css("color", "whitesmoke");


                        // Bordes
                        $(toChange).css("border-top-color", "whitesmoke");
                        $(toChange).css("border-bottom-color", "whitesmoke");

                        $(toChange).css("border-left-color", "whitesmoke");
                        $(toChange).css("border-right-color", "whitesmoke");

                        $(toChange).css("border-style", "solid");
                        $(toChange).css("border-width", "4px");

                        // Bordes de inicio y final
                        if (x == parseInt(dateStart)) {
                            $(toChange).css("border-left-color", "#39b1cc");
                        }
                        if (x == parseInt(dateEnd)) {
                            $(toChange).css("border-right-color", "#39b1cc");
                        }
                        if (i == inicioLibre) {
                            $(toChange).css("border-top-color", "#39b1cc");
                        }
                        if (i == cantidadCamas + inicioLibre - 1) {
                            $(toChange).css("border-bottom-color", "#39b1cc");
                        }

                        // onclick
                        $(toChange).bind("click", function()
                        {
                            selectReserva(this);

                        });

                        // onhover
                        $(toChange).on('mouseout', function() {
                            hideReservaDetalle();
                        });
                    }
                }
                cantidadCamas = 0;
                inicioLibre = 0;
            }
        }
    });
}

// Salvar y cobrar
function saveReservaCobrar() {
    saveReserva();
    window.MontoCobro = parseFloat($("#txtPrecioHabitacionReserva").text());
    showCobros();
}


function saveReserva() {
    var checkin = $("#txtCheckin").prop("value");
    var checkout = $("#txtCheckout").prop("value");
    var idcliente = window.IdCliente;
    var idusuario = $("#userLogged").val();
    var idorigenreserva = $("#cboOrigenReserva").prop("value");
    var idroom = $("#txtReservaRoom").val();
    var cantidad = $("#cboReservaCantidad").prop("value");
    var status = 1;
    if (idcliente == -1) {
        alert("Debe seleccionar un cliente");
        return;
    }
//    Busco el último asiento
    getIdAsiento("reservas");

    // Agrego el cliente a cobros en caso de usarlo
    window.IdClienteCobro = window.IdCliente;

    checkin = checkin.split("-")[0] + "-" + completeDateWithZeros(checkin.split("-")[1]) + "-" + completeDateWithZeros(checkin.split("-")[2]);
    checkout = checkout.split("-")[0] + "-" + completeDateWithZeros(checkout.split("-")[1]) + "-" + completeDateWithZeros(checkout.split("-")[2]);

    var data = "&checkin=" + checkin + "&checkout=" + checkout + "&idcliente=" + idcliente +
            "&idusuario=" + idusuario + "&idorigenreserva=" + idorigenreserva + "&idroom=" + idroom +
            "&cantidad=" + cantidad + "&status=" + status;
    data = "type=1" + data;
    $.ajax({
        type: "post",
        url: "./src/reservas.php",
        data: data,
        success: function(data) {
            //$("#resultados").html(data);
            
            
            
            showResultado($("#resultadosServer"), 'Datos guardado con éxito');

            // Guarda una entrada en clientes
            saveMovimiento('1.1.2.01', window.IdAsiento, '0', '-1', data, idcliente, '1', idusuario, $("#txtPrecioHabitacionReserva").text(),
                    window.IdMonedaPesos, $("#txtPrecioHabitacionReserva").text(), '1',
                    "Reserva habitación");
            // Guarda 
            saveMovimiento('4.1.1.01', window.IdAsiento, '0', '-1', data, idcliente, '1', idusuario, $("#txtPrecioHabitacionReserva").text(),
                    window.IdMonedaPesos, $("#txtPrecioHabitacionReserva").text(), '1',
                    "Reserva habitación");
            window.IdReservaCobro = data;
            window.IdClienteCobro = idcliente;

            clear();
            //getClientes('IdCliente');
            hideReservas(1);
            getDetalleOcupacion();
            window.IdCliente = -1;
//            location.reload();
        },
        error: function(XMLHttpRequest, textStatus, errorThrown) {
            alert("Status: " + textStatus);
            alert("Error: " + errorThrown);
        }

    });
}

function deleteReserva(id) {
    var r = confirm("¿Desea realmente eliminar la reserva?");
    if (r == true) {
//        alert(id);
        $.ajax({
            type: "post",
            url: "./src/reservas.php",
            data: "type=2&id=" + id,
            success: function(data) {
                showResultado($("#resultadosServer"), data);
                clear();
                //getClientes('IdCliente');
                hideReservas(1);
                getDetalleOcupacion();
                IdReserva = -1;
            }

        });
    }
}

function selectReserva(obj) {
    var strReserva = $(obj).val();
    IdReserva = strReserva.split("-")[1];
}


function getReservaDetalle(id) {

    $.ajax({
        type: "post",
        url: "./src/reservas.php",
        data: "type=4&id=" + id,
        success: function(data) {
            $("#detalleReservasPopUp").html(data);
            $("#detalleReservasPopUp").css("opacity", "1");
            $("#detalleReservasPopUp").css("top", yMouse);
            $("#detalleReservasPopUp").css("left", xMouse);
            hideMenu(2);
        }

    });
}

function hideReservaDetalle() {
    $("#detalleReservasPopUp").css("opacity", "0");
}



// obtiene información de la habitación
function recibeDatosHabitacionReservas(data) {
    var roomData = data.split(" ");
    var precioTotal = 0;
    if (window.cantDiasRegistracion >= 30) {
        precioTotal = window.cantDiasRegistracion * parseInt(roomData[5]);
        $("#txtPrecioHabitacionReserva").text(precioTotal);
    } else {
        precioTotal = window.cantDiasRegistracion * parseInt(roomData[4]);
        $("#txtPrecioHabitacionReserva").text(precioTotal);
    }
}


function recalcularPrecioReserva() {
    var precioTotal = $("#txtPrecioHabitacionReserva").text();
    var cantidad = $("#cboReservaCantidad").val();
    $("#txtPrecioHabitacionReserva").text(parseFloat(precioTotal) * parseInt(cantidad));
}